| {z } Pseudo-random numbers: a line at a time

advertisement

Pseudo-random numbers: z }| { mostly of code

| {z } a line at a time

Nelson H. F. Beebe

Research Professor

University of Utah

Department of Mathematics, 110 LCB

155 S 1400 E RM 233

Salt Lake City, UT 84112-0090

USA

Email: beebe@math.utah.edu

, beebe@acm.org

, beebe@computer.org

(Internet)

WWW URL: http://www.math.utah.edu/~beebe

Telephone: +1 801 581 5254

FAX: +1 801 581 4148

24 September 2011

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 1 / 61

What are random numbers good for?

o Decision making (e.g., coin flip).

o Generation of numerical test data.

o Generation of unique cryptographic keys.

o Search and optimization via random walks.

o Selection: quicksort (C. A. R. Hoare, ACM Algorithm 64:

Quicksort , Comm. ACM.

4 (7), 321, July 1961) was the first widely-used divide-and-conquer algorithm to reduce an O ( N

2

) problem to (on average) O ( N lg ( N )) . Cf. Fast Fourier Transform

(Clairaut (1754), Lagrange (1759), Gauss (1805 unpublished, 1866)

[Latin], Runge (1903), Danielson and Lanczos [crystallography]

(1942), Cooley and Tukey (1965)).

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 2 / 61

Historical note: al-Khwarizmi

Abu ’Abd Allah Muhammad ibn Musa al-Khwarizmi (ca. 780–850) is the father of algorithm and of algebra , from his book Hisab Al-Jabr wal

Mugabalah (Book of Calculations, Restoration and Reduction) . He is celebrated in a 1200-year anniversary Soviet Union stamp:

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 3 / 61

What are random numbers good for? . . .

o Simulation.

o Sampling: unbiased selection of random data in statistical computations (opinion polls, experimental measurements, voting,

Monte Carlo integration, . . . ). The latter is done like this ( x k random in ( a , b ) ): is

Z b f a

( x ) dx ≈

( b − a )

N k

N

= 1 f ( x k

)

!

+ O ( 1 /

N )

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 4 / 61

Monte Carlo integration

Here is an example of a simple, smooth, and exactly integrable function, and the relative error of its Monte Carlo integration: f(x) = 1/sqrt(x

2

+ c

2

) [c = 5]

0.200

0.150

0.100

0.050

0.000

-10 -8 -6 -4 -2 0 2 4 6 8 10

N

Convergence of Monte Carlo integration

0

-1

-2

-3

-4

-5

-6

-7

0 20 40 60 80 100

N

Convergence of Monte Carlo integration

0

-1

-2

-3

-4

-5

-6

-7

0 1 2 log(N)

3 4 5

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 5 / 61

When is a sequence of numbers random?

o Computer numbers are rational, with limited precision and range.

Irrational and transcendental numbers are not represented.

o Truly random integers would have occasional repetitions, but most pseudo-random number generators produce a long sequence, called the period , of distinct integers: these cannot be random.

o It isn’t enough to conform to an expected distribution: the order that values appear in must be haphazard.

o Mathematical characterization of randomness is possible, but difficult.

o The best that we can usually do is compute statistical measures of closeness to particular expected distributions.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 6 / 61

Distributions of pseudo-random numbers o Uniform (most common).

o Exponential.

o Normal (bell-shaped curve).

o Logarithmic: if ran () is uniformly-distributed in ( a , b ) , define randl ( x ) = exp ( x ran ()) . Then a randl ( ln ( b / a )) is logarithmically distributed in ( a , b ) . [Important use: sampling in floating-point number intervals.]

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 7 / 61

Distributions of pseudo-random numbers . . .

Sample logarithmic distribution:

% hoc a = 1 b = 1000000 for (k = 1; k <= 10; ++k) printf "%16.8f\n", a*randl(ln(b/a))

664.28612484

199327.86997895

562773.43156449

91652.89169494

34.18748767

472.74816777

12.34092778

2.03900107

44426.83813202

28.79498121

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 8 / 61

Uniform distribution

Here are three ways to visualize a pseudo-random number distribution, using the Dyadkin-Hamilton generator function rn01() , which produces results uniformly distributed on ( 0, 1 ] :

Uniform Distribution

1.0

0.8

0.6

0.4

0.2

0.0

0 2500 5000 output n

7500 10000

Uniform Distribution

1.0

0.8

0.6

0.4

0.2

0.0

0 2500 5000 sorted n

7500 10000

Uniform Distribution Histogram

150

100

50

0

0.0

0.2

0.4

x

0.6

0.8

1.0

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 9 / 61

Disorder and order

The Swiss artist Ursus Wehrli dislikes randomness:

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 10 / 61

Exponential distribution

Here are visualizations of computations with the Dyadkin-Hamilton generator rnexp() , which produces results exponentially distributed on

[ 0,

) :

10

8

6

4

2

0

0

Exponential Distribution

2500 5000 output n

7500 10000

10

8

6

4

2

0

0

Exponential Distribution

2500 5000 sorted n

7500 10000

1000

800

600

400

200

0

0

Exponential Distribution Histogram

1 2 3 x

4 5 6

Even though the theoretical range is [ 0,

∞ ) , the results are practically always modest: the probability of a result as big as 50 is smaller than

2 × 10

− 22

. At one result per microsecond, it could take 164 million years of computing to encounter such a value!

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 11 / 61

Normal distribution

Here are visualizations of computations with the Dyadkin-Hamilton generator rnnorm() , which produces results normally distributed on

( − ∞

, + ∞ ) :

4

3

2

1

0

-1

-2

-3

-4

0

Normal Distribution

2500 5000 output n

7500 10000

4

3

2

1

0

-1

-2

-3

-4

0

Normal Distribution

2500 5000 sorted n

7500 10000

Normal Distribution Histogram

400

350

300

250

200

150

100

50

0

-4 -3 -2 -1 0 1 2 3 x

4

Results are never very large: a result as big as 7 occurs with probability smaller than 5 × 10

− 23

. At one result per microsecond, it could take

757 million years of computing to encounter such a value.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 12 / 61

Logarithmic distribution

Here are visualizations of computations with the hoc generator randl(ln(1000000)) , which produces results normally distributed on

( 1, 1000000 ) :

1000000

800000

600000

400000

200000

0

0

Logarithmic Distribution

2500 5000 7500 10000 output n

1000000

800000

600000

400000

200000

0

0

Logarithmic Distribution

2500 5000 7500 10000 sorted n

500

400

300

200

100

0

0

Logarithmic Distribution Histogram

50 100 150 200 250 x

The graphs are similar to those for the exponential distribution, but here, the result range is controlled by the argument of randl() .

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 13 / 61

Goodness of fit: the

χ

2 measure

Given a set of n independent observations with measured values M k expected values E fit. So is ∑ n k = 1

( E k k

, then ∑

− M k

) 2 n k = 1

| ( E k

− M k

) | and is a measure of goodness of

. Statisticians use instead a measure introduced in 1900 by one of the founders of modern statistics, the English mathematician Karl Pearson (1857–1936):

χ

2 measure = k n

= 1

( E k

− M k

) 2

E k

Equivalently, if we have s categories expected to occur with probability p k

, and if we take n samples, counting the number Y k in category k , then

χ

2 measure = k s

= 1

( np k

− Y k

)

2 np k

(1880)

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 14 / 61

Goodness of fit: the

χ

2 measure . . .

The theoretical

χ

2 distribution depends on the number of degrees of freedom, and table entries look like this (highlighted entries are referred to later):

D.o.f.

ν

ν

= 1

= 5

ν

ν

= 10

= 50 p = 1% p = 5% p = 25% p = 50% p = 75% p = 95% p = 99%

0.00016 0.00393

0.1015

0.4549

1.323

0.5543

1.1455

2.675

4.351

6.626

2.558

3.940

6.737

29.71

34.76

42.94

9.342

49.33

12.55

56.33

3.841

11.07

18.31

67.50

6.635

15.09

23.21

76.15

For example, this table says:

For

ν

= 10 , the probability that the

χ

2 measure is no larger than 23.21 is 99%.

In other words,

χ

2 measures larger than 23.21

should occur only about 1% of the time.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 15 / 61

Goodness of fit: coin-toss experiments

Coin toss has one degree of freedom,

ν then it must be tails.

= 1 , because if it is not heads,

% hoc for (k = 1; k <= 10; ++k) print randint(0,1), ""

0 1 1 1 0 0 0 0 1 0

This gave four 1s and six 0s:

χ

2 measure =

( 10 × 0.5

− 4 )

2

+ ( 10 × 0.5

− 6 )

2

10 × 0.5

= 2 / 5

= 0.40

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 16 / 61

Goodness of fit: coin-toss experiments . . .

From the table, for

ν

= 1 , we expect a

χ

2 measure no larger than

0.4549

half of the time, so our result is reasonable.

On the other hand, if we got nine 1s and one 0, then we have

χ

2 measure =

( 10 × 0.5

− 9 ) 2 + ( 10 × 0.5

− 1 ) 2

10 × 0.5

= 32 / 5

= 6.4

This is close to the tabulated value 6.635

at p = 99%. That is, we should only expect nine-of-a-kind about once in every

100 experiments.

If we had all 1s or all 0s, the

χ

2 measure is 10 (probability

[ twice in 1000 experiments ].

If we had equal numbers of 1s and 0s, then the

χ

2 p = 0.998) measure is 0, indicating an exact fit.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 17 / 61

Goodness of fit: coin-toss experiments . . .

Let’s try 100 similar experiments, counting the number of 1s in each experiment:

% hoc for (n = 1; n <= 100; ++n) { sum = 0 for (k = 1; k <= 10; ++k) \ sum += randint(0,1) print sum, ""

}

4 4 7 3 5 5 5 2 5 6 6 6 3 6 6 7 4 5 4 5 5 4

3 6 6 9 5 3 4 5 4 4 4 5 4 5 5 4 6 3 5 5 3 4

4 7 2 6 5 3 6 5 6 7 6 2 5 3 5 5 5 7 8 7 3 7

8 4 2 7 7 3 3 5 4 7 3 6 2 4 5 1 4 5 5 5 6 6

5 6 5 5 4 8 7 7 5 5 4 5

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 18 / 61

Goodness of fit: coin-toss experiments . . .

The measured frequencies of the sums are: k

Y k

100 experiments

0 1 2 3 4 5 6 7 8 9 10

0 1 5

1

2

1

9

3

1

1

6

1

2 3 1 0

Notice that nine-of-a-kind occurred once each for 0s and 1s, as predicted.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 19 / 61

Goodness of fit: coin-toss experiments . . .

A simple one-character change on the outer loop limit produces the next experiment: k

Y k

1000 experiments

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

1 2 3 3 8 7

1

6

1

4

2

9

5

1

4

3

6

2

6

2

7

9

8

4

9

3

8

4

7

6

5

4

5

9

2

9

4

3

3

1

2

1

1

8

1

0 7 6 1 1 0

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 20 / 61

Goodness of fit: coin-toss experiments . . .

Another one-character change gives us this: k

Y k

10 000 experiments

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

0 0 3 1 7 7

1

2

2

7

3

0

8

5

9

9

1

6

8

2

2

4

2

9

5

4

2

0

4

8

4

5

8

8

6

6

3

7

6

6

7

9

9

8

0

4

7

5

5

7

6

6

6

2

8

5

5

9

4

7

0

4

1

3

2

9

8

2

0

7

1

5

0

9

3

7

0

4

8

2

0

1

5

1

2 8 4 1 0 0

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 21 / 61

Goodness of fit: coin-toss experiments . . .

A final one-character change gives us this result for one million coin tosses: k

Y k

100 000 experiments

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

1 4

1

2

3

4

4

7

7

0

1

1

8

2

4

2

4

1

8

8

0

2

8

6

1

0

1

6

3

3

2

2

5

9

3

1

1

2

3

9

8

7

4

8

8

0

5

6

0

9

6

5

8

7

7

3

2

0

8

1

1

3

8

2

2

7

7

8

2

8

7

1

7

1

6

6

0

7

5

6

0

4

4

7

4

0

3

9

6

2

3

0

2

9

2

2

1

2

1

5

4

4

9

9

6

6

5

4

4

7

4

2

5

7

1

4

1

1

0

7

4

3

3

7

2

1 5 5

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 22 / 61

Are the digits of

π random?

Here are

χ

2 results for the digits of

π from recent computational records

(

χ

2 (

ν

= 9, p = 0.99

) ≈ 21.67

):

π

Digits

6B

Base

χ

2

10 9.00

50B

200B

10

10

5.60

8.09

1T

1T

10 14.97

16 7.94

p(

χ

2

)

0.56

0.22

0.47

0.91

0.46

1 /

π

Digits

6B

Base

χ

2

10 5.44

50B

200B

10

10

7.04

4.18

p(

χ

2

)

0.21

0.37

0.10

Whether the fractional digits of

π

, and most other transcendentals, are normal ( ≈ equally likely to occur) is an outstanding unsolved problem in mathematics.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 23 / 61

Are the first 1000 fractional digits of

π random?

3.14159265358979323846264

33 83279502 88 41971693 99 37510

58209749 44 592307816406286208998628034825342 11 70679

8214808651328230 66 47093844609 55 058 22 31725359408128

48111745028410270193852110555964462294895493038196

44288109756659334461284756482337867831652712019091

45648566923460348610454326648213393607260249141273

724587 00 660631558817488152092096282925409171536436

78925903600113305305488204665213841469519415116094

33057270365759591953092186117381932611793105118548

07446237996274956735188575272489122793818301194912

98336733624406566430860213949463952247371907021798

60943702 77 0539217176293176752384674818467669405132

00056812714526356082778577134275778960917363717872

14684409012249534301465495853710507922796892589235

42019956112129021960864034418159813629774771309960

51870721134 999999 837297804995105973173281609631859

50244594553469083026425223082533446850352619311881

71010003137838752886587533208381420617177669147303

5982534904287554 6873115956286388235378759375195778

1857780532171226806613001927876611195909216 42 01989

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 24 / 61

Are the first 1000 fractional digits of

π random?

In the first 1000 fractional digits of

π

:

83 digit pairs (81 expected)

77-digit sequence without a 4 (probability: ( 9 / 10 )

77 ≈ 0.0003) six consecutive 9 digits (probability: 1/1,000,000) last five digits are a calendar year (probability: 1/100,000)

Conclusion: for a finite sequence of digits, the answer is no!

See Aaldert Compagner, Definitions of randomness , American Journal of

Physics 59 (8) 700–705 (1991).

URL http://m.ajp.aapt.org/resource/1/ajpias/v59/i8/p700 s1

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 25 / 61

Is your name in

π

?

From http://www.dr-mikes-maths.com/pisearch.html

:

NELSON was not found, but I searched 31 415 929 digits of

π

, and found

BEEBE 4 times. The first occurrence was at position 846 052. What this means is that

π

= 3 + . . .

+

27

B

278246052

+

27

E

278246053

+

27

E

278246054

+

27

B

278246055

+

27

E

278246056

+ . . .

where A = 1, B = 2, C = 3, and so on.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 26 / 61

The Central-Limit Theorem

The famous Central-Limit Theorem (de Moivre (1718), Laplace

(1810), and Cauchy (1853)), says:

A suitably normalized sum of independent random variables is likely to be normally distributed, as the number of variables grows beyond all bounds. It is not necessary that the variables all have the same distribution function or even that they be wholly independent.

— I. S. Sokolnikoff and R. M. Redheffer

Mathematics of Physics and Modern Engineering, 2nd ed.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 27 / 61

The Central-Limit Theorem . . .

In mathematical terms, this is

P ( n

µ

+ r

1

√ n ≤ X

1

+ X

2

+ · · · + X n

≤ n

µ

+ r

2

√ n )

σ

1

2

π

Z r

2 exp ( − t

2

/ ( 2

σ

2

)) dt r

1 where the X k are independent, identically distributed, and bounded random variables,

µ is their mean value ,

σ is their standard deviation , and

σ

2 is their variance .

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 28 / 61

The Central-Limit Theorem . . .

The integrand of this probability function looks like this:

The Normal Distribution

2.0

1.5

1.0

σ

= 0.2

σ

= 0.5

σ

= 1.0

σ

= 2.0

σ

= 5.0

0.5

0.0

-10.0

Nelson H. F. Beebe (University of Utah)

-5.0

0.0

x

Pseudo-random numbers

5.0

10.0

24 September 2011 29 / 61

The Central-Limit Theorem . . .

The normal curve falls off very rapidly. We can compute its area in

[ − x , + x ] with a simple midpoint quadrature rule like this: func f(x) { global sigma; return (1/(sigma*sqrt(2*PI)))* exp(-x*x/(2*sigma**2))

} func q(a,b) { n = 10240 h = (b - a)/n area = 0 for (k = 0; k < n; ++k) \ area += h*f(a + (k + 0.5)*h); return area

}

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 30 / 61

The Central-Limit Theorem . . .

sigma = 3 for (k = 1; k < 8; ++k) \ printf "%d %.9f\n", k, q(-k*sigma,k*sigma)

1 0.682689493

2 0.954499737

3 0.997300204

4 0.999936658

5 0.999999427

6 0.999999998

7 1.000000000

In computer management, 99.999% (five 9’s) availability is five minutes downtime per year .

In manufacturing, Motorola’s 6

σ reliability with 1.5

σ drift is about three defects per million (from q ( − ( 6 − 1.5

) ∗

σ

, +( 6 − 1.5

) ∗

σ

) / 2).

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 31 / 61

The Central-Limit Theorem . . .

It is remarkable that the Central-Limit Theorem applies also to nonuniform distributions. Here is a demonstration with sums from exponential and normal distributions:

700

600

500

400

300

200

100

0

5

Sums from Exponential Distribution

10 15

Sum of 10 samples

20

700

600

500

400

300

200

100

0

5

Sums from Normal Distribution

10 15

Sum of 10 samples

Superimposed on the histograms are rough fits by eye of normal distribution curves 650 exp ( − ( x − 12.6

) 2

/ 4.7

) and

550 exp ( − ( x − 13.1

)

2

/ 2.3

) .

20

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 32 / 61

The Central-Limit Theorem . . .

Not everything looks like a normal distribution. Here is a similar experiment, using differences of successive pseudo-random numbers, bucketizing them into 40 bins from the range [ − 1.0, + 1.0

] : k

Y k

10 000 experiments (counts scaled by 1/100)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1

3

3

5

6

1

8

8

1

1

3

1

3

8

1

6

3

1

8

7

2

1

1

2

3

6

2

6

2

2

9

0

3

1

2

3

3

9

3

6

1

3

8

7

4

1

4

4

3

7

4

6

4

4

8

7

4

8

7

4

6

7

4

3

7

4

1

4

3

8

5

3

6

5

3

3

7

3

1

2

2

8

8

2

6

1

2

3

6

2

1

2

1

8

8

1

6

2

1

3

7

1

1

3

8

7

6

3

3

6

1

2

This one is known from theory: it is a triangular distribution. A similar result is obtained if one takes pair sums instead of differences.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 33 / 61

Digression: Poisson distribution

The Poisson distribution arises in time series when the probability of an event occurring in an arbitrary interval is proportional to the length of the interval, and independent of other events:

P ( X = n ) =

λ n e

λ n !

In 1898, Ladislaus von Bortkiewicz collected Prussian army data on the number of soldiers killed by horse kicks in 10 cavalry units over 20 years:

122 deaths, or an average of 122 / 200 = 0.61 deaths per unit per year.

Deaths

2

3

0

1

4

λ

= 0.61

Kicks Kicks

(actual) (Poisson)

109

65

22

3

1

108.7

66.3

20.2

4.1

0.6

Cavalry deaths by horse kick (1875--1894)

120

100 lambda = 0.61

80

60

40

20

0

-1 0 1 2

Deaths

3 4 5

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 34 / 61

The Central-Limit Theorem . . .

Measurements of physical phenomena often form normal distributions:

1250

Chest girth of Scottish soldiers (1817)

1000

750

500

250

0

32 34 36 38 40 42 44 46 48

Inches

2000

Height of French soldiers (1851--1860)

1500

1000

500

0

56 58 60 62 64 66 68 70

Inches

Nelson H. F. Beebe (University of Utah)

Weights of 10,000 gold sovereigns (1848)

4000

3000

2000

1000

0

-0.3 -0.2 -0.1

0.0

0.1

0.2

0.3

Grains from average

Pseudo-random numbers

24 September 2011 35 / 61

The Central-Limit Theorem . . .

Error in erf(x)

1.0

0.5

0.0

-0.5

-1.0

-5 -4 -3 -2 -1 0 1 2 3 4 5 x

Error in gamma(x)

20

15

10

5

0

-5

-10

-15

-20

0 1 2 3 4 5 6 7 8 9 10 x

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

Error in erf(x), x on [-5,5]

800

600

400

200

0

-1.0

σ

= 0.22

-0.5

0.0

0.5

Units in the last place

1.0

Error in gamma(x), x on [0..10]

2500

2000

1500

σ

= 3.68

1000

500

0

-15 -10 -5 0 5

Units in the last place

10 15

24 September 2011 36 / 61

The Central-Limit Theorem . . .

Error in log(x)

1.0

0.5

0.0

-0.5

-1.0

0 1 2 3 4 5 6 7 8 9 10 x

Error in sin(x)

1.0

0.5

0.0

-0.5

-1.0

0 1 2 3 x

4 5 6

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

700

600

500

400

300

200

100

0

-1.0

Error in log(x), x on (0..10]

-0.5

0.0

σ

= 0.22

0.5

Units in the last place

1.0

400

300

200

100

0

-1.0

Error in sin(x), x on [0..2

π

)

σ

= 0.19

-0.5

0.0

0.5

Units in the last place

1.0

24 September 2011 37 / 61

The Normal Curve and Carl-Friedrich Gauß (1777–1855)

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 38 / 61

The Normal Curve and the Quincunx

~

~

~

~

~ quincunx , n.

2 . An arrangement or disposition of five objects so placed that four occupy the corners, and the fifth the centre, of a square or other rectangle; a set of five things arranged in this manner.

b . spec. as a basis of arrangement in planting trees, either in a single set of five or in combinations of this; a group of five trees so planted.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

Oxford English Dictionary

24 September 2011 39 / 61

The Normal Curve and the Quincunx . . .

For simulations and other material on the quincunx (Galton’s bean machine ), see: http://www.ms.uky.edu/~mai/java/stat/GaltonMachine.html

http://www.rand.org/statistics/applets/clt.html

http://www.stattucino.com/berrie/dsl/Galton.html

http://teacherlink.org/content/math/interactive/ flash/quincunx/quincunx.html

http://www.bun.kyoto-u.ac.jp/~suchii/quinc.html

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 40 / 61

Remarks on random numbers

Any one who considers arithmetical methods of producing random numbers is, of course, in a state of sin.

— John von Neumann (1951)

[ The Art of Computer Programming, Vol. 2,

Seminumerical Algorithms , 3rd ed., p. 1]

He talks at random; sure, the man is mad.

— Queen Margaret

[William Shakespeare’s 1 King Henry VI ,

Act V, Scene 3 (1591)]

Nelson H. F. Beebe (University of Utah)

A random number generator chosen at random isn’t very random.

— Donald E. Knuth (1997)

[ The Art of Computer Programming, Vol. 2,

Seminumerical Algorithms , 3rd ed., p. 384]

Pseudo-random numbers

24 September 2011 41 / 61

How do we generate pseudo-random numbers?

o Linear-congruential generators (most common): r n + 1

0

= ( ar n

+ c ) mod m , for integers a , c , and m , where 0 < m ,

≤ a < m , 0 ≤ c < m , with starting value 0 ≤ r

0

< m .

o Fibonacci sequence (bad!): r n + 1

= ( r n

+ r n − 1

) mod m .

o Additive (better): r n + 1

= ( r n −

α

+ r n −

β

) mod m .

o Multiplicative (bad): r n + 1

= ( r n −

α

× r n −

β

) mod m .

o Shift register: r n + k

= ∑ i k − 1

= 0

( a i r n + i

( mod 2 )) ( a i

= 0, 1 ) .

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 42 / 61

How do we generate pseudo-random numbers? . . .

Given an integer r ∈ [ A , B ) , x = ( r − A ) / ( B − A + 1 ) is on [ 0, 1 ) .

However, interval reduction by A + ( r − A ) mod s to get a distribution in

( A , C ) , where s = ( C − A + 1 ) , is possible only for certain values of s .

Consider reduction of [ 0, 4095 ] to [ 0, m ] , with m ∈ [ 1, 9 ] : we get equal distribution of remainders only for m = 2 q − 1: m counts of remainders k mod

OK 1 2048 2048

2 1366 1365 1365

OK 3 1024 1024 1024 1024

( m + 1 ) , k ∈ [ 0, m ]

6

OK 7

4

5

8

9

820 819 819 819 819

683 683 683 683 682 682

586

512

585

512

585

512

585

512

585

512

585

512

585

512 512

456 455 455 455 455 455 455 455 455

410 410 410 410 410 410 409 409 409 409

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 43 / 61

How do we generate pseudo-random numbers? . . .

Samples from other distributions can usually be obtained by some suitable transformation. Here is the simplest generator for the normal distribution, assuming that randu() returns uniformly-distributed values on ( 0, 1 ] : func randpmnd() \

{ ## Polar method for random deviates

## Algorithm P, p. 122, from Donald E. Knuth,

## The Art of Computer Programming, vol. 2, 3/e, 1998 while (1) \

{ v1 = 2*randu() - 1 # v1 on [-1,+1] v2 = 2*randu() - 1 # v2 on [-1,+1] s = v1*v1 + v2*v2 # s on [0,2] if (s < 1) break # exit loop if s inside unit circle

} return (v1 * sqrt(-2*ln(s)/s))

}

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 44 / 61

Period of a sequence

All pseudo-random number generators eventually reproduce the starting sequence; the period is the number of values generated before this happens.

Widely-used historical generators have periods of a few tens of thousands to a few billion, but good generators are now known with very large periods:

> 10

14

> 10

57

> 10

18

> 10

38

> 10

449

> 10

2894

> 10

6001

> 10

14100

> 10

16736

POSIX drand48() LCG (2

48

) (1982),

Marsaglia short and fast xorshift() (2

192

) (2003),

Numerical Recipes ran2() (1992),

NIST Advanced Encryption Standard (AES) (2

128

) (2003),

Matlab’s rand() ( ≈ 2

1492

Columbus generator),

Marsaglia’s Monster-KISS (2000),

Matsumoto and Nishimura’s Mersenne Twister (1998),

Deng and Xu (2003),

Berdnikov, Trutia, & Compagner MathLink (1996).

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 45 / 61

Reproducible sequences

In computational applications with pseudo-random numbers, it is essential to be able to reproduce a previous calculation. Thus, generators are required that can be set to a given initial seed :

% hoc for (k = 0; k < 3; ++k) \

{ setrand(12345) for (n = 0; n < 10; ++n) print int(rand()*100000),"" println ""

}

88185 5927 13313 23165 64063 90785 24066 37277 55587 62319

88185 5927 13313 23165 64063 90785 24066 37277 55587 62319

88185 5927 13313 23165 64063 90785 24066 37277 55587 62319

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 46 / 61

Reproducible sequences . . .

If the seed is not reset, different sequences are obtained for each test run.

Here is the same code as before, with the setrand() call disabled: for (k = 0; k < 3; ++k) \

{

## setrand(12345) for (n = 0; n < 10; ++n) print int(rand()*100000),"" println ""

}

36751 37971 98416 59977 49189 85225 43973 93578 61366 54404

70725 83952 53720 77094 2835 5058 39102 73613 5408 190

83957 30833 75531 85236 26699 79005 65317 90466 43540 14295

In practice, software must have its own source-code implementation of the generators : vendor-provided ones do not suffice.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 47 / 61

The correlation problem

Random numbers fall mainly in the planes

— George Marsaglia (1968)

Linear-congruential generators are known to have correlation of successive numbers: if these are used as coordinates in a graph, one gets patterns, instead of uniform grey:

Good Bad

0.5

0.4

0.3

0.2

0.1

0

0

1

0.9

0.8

0.7

0.6

1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

0 0.2

0.4

0.6

0.8

1 0.2

0.4

0.6

0.8

The number of points plotted is the same in each graph.

1

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 48 / 61

The correlation problem . . .

The good generator is Matlab’s rand() . Here is the bad generator:

% hoc func badran() { global A, C, M, r; r = int(A*r + C) % M; return r }

M = 2^15 - 1; A = 2^7 - 1 ; C = 2^5 - 1 r = 0 ; r0 = r ; s = -1 ; period = 0 while (s != r0) {period++; s = badran(); print s, "" }

31 3968 12462 9889 10788 26660 ... 22258 8835 7998 0

# Show the sequence period println period

175

# Show that the sequence repeats for (k = 1; k <= 5; ++k) print badran(),""

31 3968 12462 9889 10788

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 49 / 61

The correlation problem . . .

Marsaglia’s (2003) family of xor-shift generators: y ^= y << a; y ^= y >> b; y ^= y << c; l-003

4e+09

3e+09

2e+09

1e+09

0e+00

0e+00 1e+09 2e+09 3e+09 4e+09 l-028

4e+09

3e+09

2e+09

1e+09

0e+00

0e+00 1e+09 2e+09 3e+09 4e+09 l-007

4e+09

3e+09

2e+09

1e+09

0e+00

0e+00 1e+09 2e+09 3e+09 4e+09 l-077

4e+09

3e+09

2e+09

1e+09

0e+00

0e+00 1e+09 2e+09 3e+09 4e+09

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 50 / 61

Generating random integers

When the endpoints of a floating-point uniform pseudo-random number generator are uncertain, generate random integers in [ low , high ] like this: func irand(low, high) \

{

# Ensure integer endpoints low = int(low) high = int(high)

# Sanity check on argument order if (low >= high) return (low)

# Find a value in the required range n = low - 1 while ((n < low) || (high < n)) \ n = low + int(rand() * (high + 1 - low)) return (n)

} for (k = 1; k <= 20; ++k) print irand(-9,9), ""

-9 -2 -2 -7 7 9 -3 0 4 8 -3 -9 4 7 -7 8 -3 -4 8 -4 for (k = 1; k <= 20; ++k) print irand(0, 10^6), ""

986598 580968 627992 379949 700143 734615 361237

322631 116247 369376 509615 734421 321400 876989

940425 139472 255449 394759 113286 95688

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 51 / 61

Generating random integers in order

% hoc func bigrand() { return int(2^31 * rand()) }

# select(m,n): select m pseudo-random integers from (0,n) in order proc select(m,n) \

{ mleft = m remaining = n for (i = 0; i < n; ++i) \

{ if (int(bigrand() % remaining) < mleft) \

{ print i, "" mleft--

} remaining--

} println ""

}

See Chapter 12 of Jon Bentley, Programming Pearls , 2nd ed.,

Addison-Wesley (2000), ISBN 0-201-65788-0. [ACM TOMS 6 (3),

359–364, September 1980].

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 52 / 61

Generating random integers in order . . .

Here is how the select() function works: select(3,10)

5 6 7 select(3,10)

0 7 8 select(3,10)

2 5 6 select(3,10)

1 5 7 select(10,100000)

7355 20672 23457 29273 33145 37562 72316 84442 88329 97929 select(10,100000)

401 8336 41917 43487 44793 56923 61443 90474 92112 92799

Pseudo-random numbers

24 September 2011

5604 8492 24707 31563 33047 41864 42299 65081 90102 97670

53 / 61

Testing pseudo-random number generators

Most tests are based on computing a

χ

2 theoretical values.

If one gets values p < 1% or p > measure of computed and

99% for several tests, the generator is suspect.

Marsaglia Diehard Battery test suite (1985): 15 tests.

Marsaglia/Tsang tuftest suite (2002): 3 tests.

All produce p values that can be checked for reasonableness.

These tests all expect uniformly-distributed pseudo-random numbers.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 54 / 61

Testing nonuniform pseudo-random number generators

How do you test a generator that produces pseudo-random numbers in some other distribution? You have to figure out a way to use those values to produce an expected uniform distribution that can be fed into the standard test programs.

For example, take the negative log of exponentially-distributed values, since − log ( exp ( − random )) = random.

For normal distributions, consider successive pairs

2-dimensional vector, and express in polar form ( r ,

(

θ x

)

,

: y

θ

) as a is then uniformly distributed in [ 0, 2

π

) , and

θ

/ ( 2

π

) is in [ 0, 1 ) .

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 55 / 61

The Marsaglia/Tsang tuftest tests

Just three tests instead of the fifteen of the Diehard suite: o b’day test (generalization of Birthday Paradox).

o Euclid’s (ca. 330–225BC) gcd test.

o Gorilla test (generalization of monkey’s typing random streams of characters).

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 56 / 61

Digression: The Birthday Paradox

The birthday paradox arises from the question How many people do you need in a room before the probability is at least half that two of them share a birthday?

The answer is just 23, not 365 / 2 = 182.5.

The probability that none of n people are born on the same day is

P ( 1 ) = 1

P ( n ) = P ( n − 1 ) × ( 365 − ( n − 1 )) / 365

The n -th person has a choice of 365 − ( n − 1 ) days to not share a birthday with any of the previous ones. Thus, ( 365 − ( n − 1 )) / 365 is the probability that the n -th person is not born on the same day as any of the previous ones, assuming that they are born on different days.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 57 / 61

Digression: The Birthday Paradox . . .

Here are the probabilities that n people share a birthday (i.e., 1 − P ( n ) ):

% hoc128

PREC = 3 p = 1 for (n = 1;n <= 365;++n) \

{p *= (365-(n-1))/365; println n,1-p}

1 0

2 0.00274

3 0.00820

4 0.0164

...

22 0.476

23 0.507

24 0.538

...

100 0.999999693

...

P ( 365 ) ≈ 1.45

× 10

− 157

[cf. 10

80 particles in universe].

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 58 / 61

Digression: Euclid’s algorithm (ca. 300BC)

This is the oldest surviving nontrivial algorithm in mathematics.

func gcd(x,y) \

{ ## greatest common denominator of integer x, y r = abs(x) % abs(y) if (r == 0) return abs(y) else return gcd(y, r)

} func lcm(x,y) \

{ ## least common multiple of integer x,y x = int(x) y = int(y) if ((x == 0) || (y == 0)) return (0) return ((x * y)/gcd(x,y))

}

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 59 / 61

Digression: Euclid’s algorithm . . .

Complete rigorous analysis of Euclid’s algorithm was not achieved until

1970–1990!

The average number of steps is

A ( gcd ( x , y )) ≈ ( 12 ln 2 ) /

π

2

≈ 1.9405 log

10 y ln y and the maximum number is

M ( gcd ( x , y )) = b log

φ

(( 3 −

φ

) y ) c where

φ

= ( 1 +

≈ 4.785 log

10 y + 0.6723

5 ) / 2 ≈ 1.6180 is the golden ratio.

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 60 / 61

Hardware generators

Cryptographic accelerator boards (IBM, Sun/Oracle, . . . )

Quantis PCI card (2004) ( http://www.randomnumbers.info/ )

863 328 405 985 310 188 300 795 5 886

84 210 411 664 264 438 221 561 756 152

617 652 112 316 551 102 682 2 851 425

New Intel hardware: RdRand for 16-, 32-, and 64-bit random values

[IEEE Spectrum September 2011]

Nelson H. F. Beebe (University of Utah)

Pseudo-random numbers

24 September 2011 61 / 61

Download